今天來說一個今年剛出的東西 SwiftData 吧。
Apple 在 Swift 添加了 SwiftData,開發者可以透過程式簡單的將資料持久化,透過一般的 Swift 程式,就能查詢及過濾所需的資料。
不過介紹前先說一下 SwiftData 是今年剛出的架構,它只適用 iOS 17 以上的系統,所以可能有些地方理解錯誤請見諒。
那在開始使用前,先了解一下 SwiftData 的定義、操作等都會使用到 Apple 在今年新推出的東西:Macro。關於 Macro 這部分會在後面再說明。
首先先有個大致的觀念,SwiftData 是使用經過驗證的 CoreData 儲存架構,可以理解成都是資料庫系統就是了。
那首先我們先建立一個新的專案,可以看到,Storage 選項裡多了 SwiftData 這個東西,不過這裡我們選 none。
建立好專案之後,馬上在裡面建立一個 Swift 檔,內容大概像下圖中那樣。
接下來就能開始使用 SwiftData 了,首先先 import SwiftData,import 完之後,我們需要在 class 前面加上 @Model 這個 Macro,可能你會好奇 Macro 是什麼,這部分會在之後介紹。
這裡可以稍微讓大家看看 Macro 的威力,右鍵點擊 @Model 然後選擇 Expand Macro,可以看到這裡突然憑空多出很多程式碼。
你可以理解成小小的 @Model 裡面幫你補了多少程式碼。回到正題,@Model 的功用就像是資料庫建表,以現在來說就是將 Expense 這個 class 建成模組。
模組建立好之後要做什麼?當然是定義其中屬性的關聯性了,SwiftData 裡有多種 Macro 可以用來定義屬性,例如下圖中將 name 屬性設成唯一性的,這代表如果我在一個 資料裡將 name 設成 Expense1 好了,之後的 資料的 name 都不能設成 Expense1。
最後能夠幫忙定義屬性的 Macro 還有 @Relationship、@Transient 等,@Relationship 定義模組間的關聯性,@Transient 則可以使 SwiftData 排除指定的屬性。
那今天的 SwiftData 就先介紹到這裡,明天來介紹更多關於 SwiftData 的東西。